/** layui-v2.5.4 MIT License By https://www.layui.com */
;layui.define("form", function (e) {
    "use strict";
    var i = layui.$, a = layui.form, n = "tree", r = {
            config: {}, index: layui[n] ? layui[n].index + 1e4 : 0, set: function (e) {
                var a = this;
                return a.config = i.extend({}, a.config, e), a
            }, on: function (e, i) {
                return layui.onevent.call(this, n, e, i)
            }
        }, l = function () {
            var e = this, i = e.config, a = i.id || e.index;
            return l.that[a] = e, l.config[a] = i, {
                config: i, reload: function (i) {
                    e.reload.call(e, i)
                }, getChecked: function () {
                    return e.getChecked.call(e)
                }, setChecked: function (i) {
                    return e.setChecked.call(e, i)
                }
            }
        }, t = "layui-hide", d = "layui-disabled", s = "layui-tree-set", c = "layui-tree-iconClick",
        o = "layui-icon-addition", h = "layui-icon-subtraction", u = "layui-tree-entry", f = "layui-tree-main",
        p = "layui-tree-txt", y = "layui-tree-pack", v = "layui-tree-spread", C = "layui-tree-setLineShort",
        m = "layui-tree-showLine", k = "layui-tree-lineExtend", g = function (e) {
            var a = this;
            a.index = ++r.index, a.config = i.extend({}, a.config, r.config, e), a.render()
        };
    g.prototype.config = {
        data: [],
        showCheckbox: !1,
        showLine: !0,
        accordion: !1,
        onlyIconControl: !1,
        isJump: !1,
        edit: !1,
        text: {defaultNodeName: "未命名", none: "无数据"}
    }, g.prototype.reload = function (e) {
        var a = this;
        layui.each(e, function (e, i) {
            i.constructor === Array && delete a.config[e]
        }), a.config = i.extend(!0, {}, a.config, e), a.render()
    }, g.prototype.render = function () {
        var e = this, a = e.config,
            n = i('<div class="layui-tree' + (a.showCheckbox ? " layui-form" : "") + (a.showLine ? " layui-tree-line" : "") + '" lay-filter="LAY-tree-' + e.index + '"></div>');
        e.tree(n);
        var r = a.elem = i(a.elem);
        if (r[0]) {
            if (a.showSearch && n.prepend('<input type="text" class="layui-input layui-tree-search" placeholder="请输入关键字进行过滤">'), e.key = a.id || e.index, e.elem = n, e.elemNone = i('<div class="layui-tree-emptyText">' + a.text.none + "</div>"), r.html(e.elem), 0 == e.elem.find(".layui-tree-set").length) return e.elem.append(e.elemNone);
            a.drag && e.drag(), a.showCheckbox && e.renderForm("checkbox"), e.elem.find(".layui-tree-set").each(function () {
                var e = i(this);
                e.parent(".layui-tree-pack")[0] || e.addClass("layui-tree-setHide"), !e.next()[0] && e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend") && e.addClass(C), e.next()[0] || e.parents(".layui-tree-set").eq(0).next()[0] || e.addClass(C)
            }), e.events()
        }
    }, g.prototype.renderForm = function (e) {
        a.render(e, "LAY-tree-" + this.index)
    }, g.prototype.tree = function (e, a) {
        var n = this, r = n.config, l = a || r.data;
        layui.each(l, function (a, l) {
            var c = l.children && l.children.length > 0,
                o = i('<div class="layui-tree-pack" ' + (l.spread ? 'style="display: block;"' : "") + '"></div>'),
                h = i(['<div data-id="' + l.id + '" class="layui-tree-set' + (l.spread ? " layui-tree-spread" : "") + (l.checked ? " layui-tree-checkedFirst" : "") + '">', "<div " + (r.drag && !l.fixed ? 'draggable="true"' : "") + ' class="layui-tree-entry">', '<div class="layui-tree-main">', function () {
                    return r.showLine ? c ? '<span class="layui-tree-iconClick layui-tree-icon"><i class="layui-icon ' + (l.spread ? "layui-icon-subtraction" : "layui-icon-addition") + '"></i></span>' : '<span class="layui-tree-iconClick"><i class="layui-icon layui-icon-file"></i></span>' : '<span class="layui-tree-iconClick"><i class="layui-tree-iconArrow ' + (c ? "" : t) + '"></i></span>'
                }(), function () {
                    return r.showCheckbox ? '<input type="checkbox" name="layuiTreeCheck" lay-skin="primary" ' + (l.disabled ? "disabled" : "") + '  value="' + l.id + '">' : ""
                }(), function () {
                    return r.isJump && l.href ? '<a href="' + l.href + '" target="_blank" class="' + p + '">' + (l.title || l.label || r.text.defaultNodeName) + "</a>" : '<span class="' + p + (l.disabled ? " " + d : "") + '">' + (l.title || l.label || r.text.defaultNodeName) + "</span>"
                }(), "</div>", function () {
                    if (!r.edit) return "";
                    var e = {
                        add: '<i class="layui-icon layui-icon-add-1"  data-type="add"></i>',
                        update: '<i class="layui-icon layui-icon-edit" data-type="update"></i>',
                        del: '<i class="layui-icon layui-icon-delete" data-type="del"></i>'
                    }, i = ['<div class="layui-btn-group layui-tree-btnGroup">'];
                    return r.edit === !0 && (r.edit = ["update", "del"]), "object" == typeof r.edit ? (layui.each(r.edit, function (a, n) {
                        i.push(e[n] || "")
                    }), i.join("") + "</div>") : void 0
                }(), "</div></div>"].join(""));
            c && (h.append(o), n.tree(o, l.children)), e.append(h), h.prev("." + s)[0] && h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"), c || h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"), n.spread(h, l), r.showCheckbox && n.checkClick(h, l), r.edit && n.operate(h, l)
        })
    }, g.prototype.spread = function (e, a) {
        var n = this, r = n.config, l = e.children("." + u), t = l.children("." + f), C = l.find("." + c),
            m = l.find("." + p), k = r.onlyIconControl ? C : t, g = "";
        k.on("click", function (i) {
            var a = e.children("." + y),
                n = k.children(".layui-icon")[0] ? k.children(".layui-icon") : k.find(".layui-tree-icon").children(".layui-icon");
            if (a[0]) {
                if (e.hasClass(v)) e.removeClass(v), a.slideUp(200), n.removeClass(h).addClass(o); else if (e.addClass(v), a.slideDown(200), n.addClass(h).removeClass(o), r.accordion) {
                    var l = e.siblings("." + s);
                    l.removeClass(v), l.children("." + y).slideUp(200), l.find(".layui-tree-icon").children(".layui-icon").removeClass(h).addClass(o)
                }
            } else g = "normal"
        }), m.on("click", function () {
            var n = i(this);
            n.hasClass(d) || (g = e.hasClass(v) ? r.onlyIconControl ? "open" : "close" : r.onlyIconControl ? "close" : "open", r.click && r.click({
                elem: e,
                state: g,
                data: a
            }))
        })
    }, g.prototype.setCheckbox = function (e, i, a) {
        var n = this, r = (n.config, a.prop("checked"));
        if ("object" == typeof i.children || e.find("." + y)[0]) {
            var l = e.find("." + y).find('input[name="layuiTreeCheck"]');
            l.each(function () {
                this.disabled || (this.checked = r)
            })
        }
        var t = function (e) {
            if (e.parents("." + s)[0]) {
                var i, a = e.parent("." + y), n = a.parent(), l = a.prev().find('input[name="layuiTreeCheck"]');
                if(r){
                    l.prop("checked", r)
                }else{
                   /* a.find('input[name="layuiTreeCheck"]').each(function () {
                        this.checked && (i = !0)
                    }), i || l.prop("checked", !1)*/
                }
                t(n)
            }
        };
        t(e), n.renderForm("checkbox")
    }, g.prototype.checkClick = function (e, a) {
        var n = this, r = n.config, l = e.children("." + u), t = l.children("." + f);
        t.on("click", 'input[name="layuiTreeCheck"]+', function (l) {
            layui.stope(l);
            var t = i(this).prev(), d = t.prop("checked");
            t.prop("disabled") || (n.setCheckbox(e, a, t), r.oncheck && r.oncheck({elem: e, checked: d, data: a}))
        })
    }, g.prototype.operate = function (e, a) {
        var n = this, r = n.config, l = e.children("." + u), d = l.children("." + f);
        l.children(".layui-tree-btnGroup").on("click", ".layui-icon", function (l) {
            layui.stope(l);
            var f = i(this).data("type"), g = e.children("." + y), x = {data: a, type: f, elem: e};
            if ("add" == f) {
                g[0] || (r.showLine ? (d.find("." + c).addClass("layui-tree-icon"), d.find("." + c).children(".layui-icon").addClass(o).removeClass("layui-icon-file")) : d.find(".layui-tree-iconArrow").removeClass(t), e.append('<div class="layui-tree-pack"></div>'));
                var b = r.operate && r.operate(x), w = {};
                if (w.title = r.text.defaultNodeName, w.id = b, n.tree(e.children("." + y), [w]), r.showLine) if (g[0]) g.hasClass(k) || g.addClass(k), e.find("." + y).each(function () {
                    i(this).children("." + s).last().addClass(C)
                }), g.children("." + s).last().prev().hasClass(C) ? g.children("." + s).last().prev().removeClass(C) : g.children("." + s).last().removeClass(C), !e.parent("." + y)[0] && e.next()[0] && g.children("." + s).last().removeClass(C); else {
                    var T = e.siblings("." + s), L = 1, N = e.parent("." + y);
                    layui.each(T, function (e, a) {
                        i(a).children("." + y)[0] || (L = 0)
                    }), 1 == L ? (T.children("." + y).addClass(m), T.children("." + y).children("." + s).removeClass(C), e.children("." + y).addClass(m), N.removeClass(k), N.children("." + s).last().children("." + y).children("." + s).last().addClass(C)) : e.children("." + y).children("." + s).addClass(C)
                }
                if (!r.showCheckbox) return;
                if (d.find('input[name="layuiTreeCheck"]')[0].checked) {
                    var A = e.children("." + y).children("." + s).last();
                    A.find('input[name="layuiTreeCheck"]')[0].checked = !0
                }
                n.renderForm("checkbox")
            } else if ("update" == f) {
                var q = d.children("." + p).html();
                d.children("." + p).html(""), d.append('<input type="text" class="layui-tree-editInput">'), d.children(".layui-tree-editInput").val(q).focus();
                var F = function (e) {
                    var i = e.val().trim();
                    i = i ? i : r.text.defaultNodeName, e.remove(), d.children("." + p).html(i), x.data.title = i, r.operate && r.operate(x)
                };
                d.children(".layui-tree-editInput").blur(function () {
                    F(i(this))
                }), d.children(".layui-tree-editInput").on("keydown", function (e) {
                    13 === e.keyCode && (e.preventDefault(), F(i(this)))
                })
            } else {
                if (r.operate && r.operate(x), x.status = "remove", !e.prev("." + s)[0] && !e.next("." + s)[0] && !e.parent("." + y)[0]) return e.remove(), void n.elem.append(n.elemNone);
                if (e.siblings("." + s).children("." + u)[0]) {
                    if (r.showCheckbox) {
                        var I = function (e) {
                            if (e.parents("." + s)[0]) {
                                var a = e.siblings("." + s).children("." + u), r = e.parent("." + y).prev(),
                                    l = r.find('input[name="layuiTreeCheck"]')[0], t = 1, d = 0;
                                0 == l.checked && (a.each(function (e, a) {
                                    var n = i(a).find('input[name="layuiTreeCheck"]')[0];
                                    0 != n.checked || n.disabled || (t = 0), n.disabled || (d = 1)
                                }), 1 == t && 1 == d && (l.checked = !0, n.renderForm("checkbox"), I(r.parent("." + s))))
                            }
                        };
                        I(e)
                    }
                    if (r.showLine) {
                        var T = e.siblings("." + s), L = 1, N = e.parent("." + y);
                        layui.each(T, function (e, a) {
                            i(a).children("." + y)[0] || (L = 0)
                        }), 1 == L ? (g[0] || (N.removeClass(k), T.children("." + y).addClass(m), T.children("." + y).children("." + s).removeClass(C)), e.next()[0] ? N.children("." + s).last().children("." + y).children("." + s).last().addClass(C) : e.prev().children("." + y).children("." + s).last().addClass(C), e.next()[0] || e.parents("." + s)[1] || e.parents("." + s).eq(0).next()[0] || e.prev("." + s).addClass(C)) : !e.next()[0] && e.hasClass(C) && e.prev().addClass(C)
                    }
                } else {
                    var H = e.parent("." + y).prev();
                    if (r.showLine) {
                        H.find("." + c).removeClass("layui-tree-icon"), H.find("." + c).children(".layui-icon").removeClass(h).addClass("layui-icon-file");
                        var S = H.parents("." + y).eq(0);
                        S.addClass(k), S.children("." + s).each(function () {
                            i(this).children("." + y).children("." + s).last().addClass(C)
                        })
                    } else H.find(".layui-tree-iconArrow").addClass(t);
                    e.parents("." + s).eq(0).removeClass(v), e.parent("." + y).remove()
                }
                e.remove()
            }
        })
    }, g.prototype.drag = function () {
        var e = this, a = e.config;
        e.elem.on("dragstart", "." + u, function () {
            var e = i(this).parent("." + s), n = e.parents("." + s)[0] ? e.parents("." + s).eq(0) : "未找到父节点";
            a.dragstart && a.dragstart(e, n)
        }), e.elem.on("dragend", "." + u, function (n) {
            var n = n || event, r = n.clientY, l = i(this), d = l.parent("." + s), f = d.height(), p = d.offset().top,
                g = e.elem.find("." + s), x = e.elem.height(), b = e.elem.offset().top, w = x + b - 13,
                T = d.parents("." + s)[0], L = d.next()[0];
            if (T) var N = d.parent("." + y), A = d.parents("." + s).eq(0), q = A.parent("." + y), F = A.offset().top,
                I = d.siblings(), H = A.children("." + y).children("." + s).length;
            var S = function (n) {
                if (T || L || e.elem.children("." + s).last().children("." + y).children("." + s).last().addClass(C), !T) return void d.removeClass("layui-tree-setHide");
                if (1 == H) a.showLine ? (n.find("." + c).removeClass("layui-tree-icon"), n.find("." + c).children(".layui-icon").removeClass(h).addClass("layui-icon-file"), q.addClass(k), q.children("." + s).children("." + y).each(function () {
                    i(this).children("." + s).last().addClass(C)
                })) : n.find(".layui-tree-iconArrow").addClass(t), n.children("." + y).remove(), n.removeClass(v); else {
                    if (a.showLine) {
                        var r = 1;
                        layui.each(I, function (e, a) {
                            i(a).children("." + y)[0] || (r = 0)
                        }), 1 == r ? (d.children("." + y)[0] || (N.removeClass(k), I.children("." + y).addClass(m), I.children("." + y).children("." + s).removeClass(C)), N.children("." + s).last().children("." + y).children("." + s).last().addClass(C), L || n.parents("." + s)[0] || n.next()[0] || N.children("." + s).last().addClass(C)) : !L && d.hasClass(C) && N.children("." + s).last().addClass(C)
                    }
                    if (a.showCheckbox) {
                        var l = function (a) {
                            if (a) {
                                if (!a.parents("." + s)[0]) return
                            } else if (!n[0]) return;
                            var r = a ? a.siblings().children("." + u) : I.children("." + u),
                                t = a ? a.parent("." + y).prev() : N.prev(),
                                d = t.find('input[name="layuiTreeCheck"]')[0], c = 1, o = 0;
                            0 == d.checked && (r.each(function (e, a) {
                                var n = i(a).find('input[name="layuiTreeCheck"]')[0];
                                0 != n.checked || n.disabled || (c = 0), n.disabled || (o = 1)
                            }), 1 == c && 1 == o && (d.checked = !0, e.renderForm("checkbox"), l(t.parent("." + s) || n)))
                        };
                        l()
                    }
                }
            };
            g.each(function () {
                if (0 != i(this).height()) {
                    if (r > p && r < p + f) return void (a.dragend && a.dragend("drag error"));
                    if (1 == H && r > F && r < p + f) return void (a.dragend && a.dragend("drag error"));
                    var n = i(this).offset().top;
                    if (r > n && r < n + 15) {
                        if (i(this).children("." + y)[0] || (a.showLine ? (i(this).find("." + c).eq(0).addClass("layui-tree-icon"), i(this).find("." + c).eq(0).children(".layui-icon").addClass(o).removeClass("layui-icon-file")) : i(this).find(".layui-tree-iconArrow").removeClass(t), i(this).append('<div class="layui-tree-pack"></div>')), i(this).children("." + y).append(d), S(A), a.showLine) {
                            var l = i(this).children("." + y).children("." + s);
                            if (d.children("." + y).children("." + s).last().addClass(C), 1 == l.length) {
                                var h = i(this).siblings("." + s), v = 1, g = i(this).parent("." + y);
                                layui.each(h, function (e, a) {
                                    i(a).children("." + y)[0] || (v = 0)
                                }), 1 == v ? (h.children("." + y).addClass(m), h.children("." + y).children("." + s).removeClass(C), i(this).children("." + y).addClass(m), g.removeClass(k), g.children("." + s).last().children("." + y).children("." + s).last().addClass(C).removeClass("layui-tree-setHide")) : i(this).children("." + y).children("." + s).addClass(C).removeClass("layui-tree-setHide")
                            } else d.prev("." + s).hasClass(C) ? (d.prev("." + s).removeClass(C), d.addClass(C)) : (d.removeClass("layui-tree-setLineShort layui-tree-setHide"), d.children("." + y)[0] ? d.prev("." + s).children("." + y).children("." + s).last().removeClass(C) : d.siblings("." + s).find("." + y).each(function () {
                                i(this).children("." + s).last().addClass(C)
                            })), i(this).next()[0] || d.addClass(C)
                        }
                        if (a.showCheckbox && i(this).children("." + u).find('input[name="layuiTreeCheck"]')[0].checked) {
                            var x = d.children("." + u);
                            x.find('input[name="layuiTreeCheck"]+').click()
                        }
                        return a.dragend && a.dragend("drag success", d, i(this)), !1
                    }
                    if (r < n) {
                        if (i(this).before(d), S(A), a.showLine) {
                            var b = d.children("." + y), T = i(this).parents("." + s).eq(0),
                                L = T.children("." + y).children("." + s).last();
                            if (b[0]) {
                                d.removeClass(C), b.children("." + s).last().removeClass(C);
                                var h = d.siblings("." + s), v = 1;
                                layui.each(h, function (e, a) {
                                    i(a).children("." + y)[0] || (v = 0)
                                }), 1 == v ? T[0] && (h.children("." + y).addClass(m), h.children("." + y).children("." + s).removeClass(C), L.children("." + y).children("." + s).last().addClass(C).removeClass(m)) : d.children("." + y).children("." + s).last().addClass(C), !T.parent("." + y)[0] && T.next()[0] && L.removeClass(C)
                            } else T.hasClass(k) || T.addClass(k), T.find("." + y).each(function () {
                                i(this).children("." + s).last().addClass(C)
                            });
                            T[0] || (d.addClass("layui-tree-setHide"), d.children("." + y).children("." + s).last().removeClass(C))
                        }
                        if (T[0] && a.showCheckbox && T.children("." + u).find('input[name="layuiTreeCheck"]')[0].checked) {
                            var x = d.children("." + u);
                            x.find('input[name="layuiTreeCheck"]+').click()
                        }
                        return a.dragend && a.dragend("拖拽成功，插入目标节点上方", d, i(this)), !1
                    }
                    if (r > w) return e.elem.children("." + s).last().children("." + y).addClass(m), e.elem.append(d), S(A), d.prev().children("." + y).children("." + s).last().removeClass(C), d.addClass("layui-tree-setHide"), d.children("." + y).children("." + s).last().addClass(C), a.dragend && a.dragend("拖拽成功，插入最外层节点", d, e.elem), !1
                }
            })
        })
    }, g.prototype.events = function () {
        var e = this, a = e.config, n = e.elem.find(".layui-tree-checkedFirst");
        layui.each(n, function (e, a) {
            i(a).children("." + u).find('input[name="layuiTreeCheck"]+').trigger("click")
        }), e.elem.find(".layui-tree-search").on("keyup", function () {
            var n = i(this), r = n.val(), l = n.nextAll(), d = [];
            l.find("." + p).each(function () {
                var e = i(this).parents("." + u);
                if (i(this).html().indexOf(r) != -1) {
                    d.push(i(this).parent());
                    var a = function (e) {
                        e.addClass("layui-tree-searchShow"), e.parent("." + y)[0] && a(e.parent("." + y).parent("." + s))
                    };
                    a(e.parent("." + s))
                }
            }), l.find("." + u).each(function () {
                var e = i(this).parent("." + s);
                e.hasClass("layui-tree-searchShow") || e.addClass(t)
            }), 0 == l.find(".layui-tree-searchShow").length && e.elem.append(e.elemNone), a.onsearch && a.onsearch({elem: d})
        }), e.elem.find(".layui-tree-search").on("keydown", function () {
            i(this).nextAll().find("." + u).each(function () {
                var e = i(this).parent("." + s);
                e.removeClass("layui-tree-searchShow " + t)
            }), i(".layui-tree-emptyText")[0] && i(".layui-tree-emptyText").remove()
        })
    }, g.prototype.getChecked = function () {
        var e = this, a = e.config, n = [], r = [];
        e.elem.find(".layui-form-checked").each(function () {
            n.push(i(this).prev()[0].value)
        });
        var l = function (e, a) {
            layui.each(e, function (e, r) {
                layui.each(n, function (e, n) {
                    if (r.id == n) {
                        var t = i.extend({}, r);
                        return delete t.children, a.push(t), r.children && (t.children = [], l(r.children, t.children)), !0
                    }
                })
            })
        };
        return l(i.extend({}, a.data), r), r
    }, g.prototype.setChecked = function (e) {
        var a = this;
        a.config;
        a.elem.find("." + s).each(function (a, n) {
            var r = i(this).data("id"), l = i(n).children("." + u).find('input[name="layuiTreeCheck"]'), t = l.next();
            if ("number" == typeof e) {
                if (r == e) return l[0].checked || t.click(), !1
            } else {
                for(var m=0;m<e.length;m++){
                    if(l.val()==e[m]){
                        l.prop("checked",true);
                        l.next().addClass("layui-form-checked");
                    }
                }
                /*console.log(l.val());
                i.inArray(r, e) != -1 && (l[0].checked || t.click())*/
            }
        })
    }, l.that = {}, l.config = {}, r.reload = function (e, i) {
        var a = l.that[e];
        return a.reload(i), l.call(a)
    }, r.getChecked = function (e) {
        var i = l.that[e];
        return i.getChecked()
    }, r.setChecked = function (e, i) {
        var a = l.that[e];
        return a.setChecked(i)
    }, r.render = function (e) {
        var i = new g(e);
        return l.call(i)
    }, e(n, r)
});